home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Compilers⁄Interps / kevoSource / global.c < prev    next >
Text File  |  1993-05-08  |  3KB  |  122 lines

  1. /* Kevo -- a prototype-based object-oriented language */
  2. /* (c) Antero Taivalsaari 1991-1993                   */
  3. /* Some parts (c) Antero Taivalsaari 1986-1988           */
  4. /* Global.c: Global variables and data areas           */
  5.  
  6. #include "global.h"
  7.  
  8. /* 'rootContext' holds the names of all the system definitions */
  9. /* 'userContext' is the root for user-given definitions */
  10. /* 'lastContext' refers to the latest defined context in the system */
  11. /* 'dummyContext' holds an "empty" context, which is used as a default 
  12.                   for some objects so as to allow them to be viewed by the browser.
  13. */
  14.  
  15. CONTEXT*    rootContext = NIL;
  16. CONTEXT*    userContext = NIL;
  17. CONTEXT*    lastContext = NIL; 
  18. CONTEXT*    dummyContext = NIL;
  19.  
  20.  
  21. /* User task area pointer; denotes the currently executing task */
  22. TASK**        up;
  23.  
  24. /* Object pointer; denotes the previously executed high-level definition (handle) */
  25. OBJECT*        op;
  26.  
  27. /* Execution stack pointers */
  28. int*        dataSp;
  29. int**        returnSp;
  30. int**        contextSp;
  31.  
  32.  
  33. /* Execution pointers */
  34.  
  35. /* Instruction pointer; denotes the next instruction to be executed */
  36. /* Type should actually be 'OBJECT**' */             
  37. int**        ip;        
  38.  
  39.  
  40. /* Environment buffers for setjmp */
  41.  
  42. jmp_buf    p_inner;        /* Preemptive inner interpreter longjump buffer */
  43. jmp_buf c_inner;        /* Cooperative inner interpreter longjmp buffer */
  44. jmp_buf debug;            /* Debugger longjump buffer */
  45.  
  46.  
  47. /* Multitasking variables */
  48.  
  49.             /* (Certain error handlers operate differently depending on this) */
  50. int            supervisor = FALSE;        /* Are we currently in the supervisor mode */
  51.  
  52. int            multitasking = TRUE;    /* Is task switching allowed? */
  53. int            mtaskMode;                /* Either PREEMPTIVE or COOPERATIVE */
  54.  
  55. int            slice;                    /* Time slice counter */
  56. int            basePriority = 100;        /* Base priority of newly created tasks */
  57.  
  58. TASK**        firstTask;                /* The first defined task in the system */
  59. TASK**        latestTask;                /* The latest defined task in the system */
  60.  
  61. int            taskCount = 1;            /* Total number of tasks in the system */
  62. int            runningCount = 1;        /* How many of them are running */
  63.  
  64.  
  65.  
  66. /* Critical region variables (see <| and |> in prim.c) */
  67.  
  68. /* Level of nested critical regions */
  69. /* Incremented/decremented upon entering/leaving a protected region */
  70. int            inProtRegion = 0;        
  71.  
  72. /* Stores the value of 'multitasking' upon entering a protected region */
  73. int         mtStore;
  74.  
  75.  
  76. /* Tracing variables */
  77. int         traceMode = NOTRACE; /* Current tracing mode */
  78.  
  79.  
  80. /* Debugger variables */
  81.                                 /* Needed in 'debugExit' and 'resume' */
  82. TASK**        debugTask = NIL;    /* The task which caused a breakpoint */
  83. int**        rpStore;            /* Return stack pointer temp store */
  84.  
  85.  
  86. /* Standard files */
  87.  
  88. FILE*        confile;        /* Console file */
  89. FILE*        imgfile;        /* Image (boot) file (initialized by 'main.c') */
  90.  
  91.  
  92. /* String management buffer for several operations in 'port.c' */
  93.  
  94. char        charbuffer[CHARBUFLEN];
  95.  
  96.  
  97. /*
  98.    These are global references to certain operations.
  99.    They are initialized when the system is started, and must not be changed.
  100. */
  101.  
  102. /* Initialized in 'prim.c' */
  103. OBJECT*        oExit;
  104. OBJECT*        oLit;
  105. OBJECT*        oStrLit;
  106. OBJECT*        oContext;
  107. OBJECT*        oSharedVar;
  108. OBJECT*        oTaskVar;
  109. OBJECT*        oSharedConst;
  110. OBJECT*        oTaskConst;
  111. OBJECT*        oREF;
  112. OBJECT*        oVAR;
  113. OBJECT*        oCONST;
  114.  
  115. /* Initialized in 'image.c' */
  116. OBJECT*        oBoot;
  117. OBJECT*        oShell;
  118. OBJECT*        oError;
  119. OBJECT*        oUserRoot;
  120.  
  121.  
  122.